I. Field of the Invention
The present invention relates to a system, method and medium for configuring an item such as a machine, where the item can have a multitude of optional components. With reference to embodiments envisioning configuring a machine, the present invention allows a user to choose from various "options" (representative of machine components) so that the necessary aspects (e.g., software) for operating the desired machine can be implemented. In the course of choosing options, the present invention can guide the user to determine which additional options (and thus which other corresponding machine components) may, e.g., also be required to properly configure the machine in view of those options specifically chosen by the user. It is envisioned that properties of these options are determined by a user prior to choosing the options for configuring the machine.
II. Related Art
Software is increasingly found in various types of electrical and electromechanical devices. For example, over the past few years, devices such as automobiles and toaster ovens have been incorporated with more and increasingly sophisticated software.
Often, software used with a given piece of machinery is written for a particular machine (i.e., a specific configuration of a machine). However, there are also many situations where a "base-model" machine has numerous optional components that can be chosen, requiring a change in the software that is used to operate the machine. For example, many computers can be sold with numerous different options available (e.g., different types and different numbers of hard drives, memory systems, peripherals, etc.). Also, there may be devices that come equipped with numerous different features which a user may want to activate (or deactivate). In any event, it would be very burdensome and highly undesirable for the manufacturer to develop and maintain a complete copy of each type of software suitable for each of the different possible configurations of the machine that users may desire.
In some situations, schemes have been developed to sense which optional hardware components exist in a machine configuration, and automatically configure the software accordingly. These schemes require that each component have some feature that allows it to be identified, typically in the form of some electronic connection. However, a user may want to use components that are not manufactured with such identification features. Implementation of such a feature (either during or after manufacture) for each component can be an expensive and cumbersome proposition, significantly adding to the cost of each component, and thus making the finished machine more expensive.
To provide a user with an efficient and flexible scheme for configuring machines having multiple possible configurations, various techniques and schemes have been developed. One example was the development of the Masterfab Cluster Controller (MCC) by Applied Materials of Santa Clara, Calif. The MCC uses an inheritance-based control hierarchy scheme to assist a user in configuring the particular machine of their choosing. Specifically, the user can choose specific attribues relating to the desired machine configuration, wherein the attributes are stored for use with the machine during its operation.
However, schemes such as the MCC mentioned above are deficient in that the way a user had to configure the machines was still very cumbersome. In addition, such schemes, which often utilize a pure tree-based data model, do not assist the user in determining the relationship between the various components that could be configured. For example, they do not indicate whether certain components of the machine are necessary when other components are chosen, or whether certain components are mutually exclusive with one another (e.g., there are no rule-based constraints associated with them).
Consequently, what is needed is an efficient, "intelligent" scheme for assisting in the choosing of components for the configuration of a machine.